﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Collections;
using System.Security.Cryptography;

namespace NetManager_Server
{
    class function
    {
        ket_noi kn = new ket_noi();
        public static DTSThongKe tkdt = new DTSThongKe();

        #region Hàm random cho số thứ tự
        public string Random()
        {
            Random rd = new Random();
            Int64 s_rd = rd.Next();
            string c_rd = Convert.ToString(s_rd);
            c_rd = c_rd.Substring(0, 5);
            return c_rd;
        }
        #endregion

        #region Hàm đọc bảng load lên Combobox
        public static DataTable Doc_bang(string lenh)
        {
            DataTable Kq = new DataTable();
            ket_noi kn = new ket_noi();
            kn.Open();
            SqlDataAdapter bo_doc_ghi = new SqlDataAdapter(lenh, kn.conn);
            bo_doc_ghi.FillSchema(Kq, SchemaType.Source);
            bo_doc_ghi.Fill(Kq);
            return Kq;
        }
        #endregion

        #region Hàm so sánh mã để lấy tên
        public string LoadName(string tablename, string columnget, string column, string compare)
        {
            ket_noi kn = new ket_noi();
            kn.Open();
            SqlCommand comm = new SqlCommand("select " + columnget + " from " + tablename + " where " + column + "='" + compare + "'", kn.conn);
            string result = Convert.ToString(comm.ExecuteScalar());
            kn.Close();
            return result;
        }
        #endregion

        #region Hàm load dữ liệu từ Table lên DataDridview
        public DataSet LoadData(string tablename)
        {
            ket_noi kn = new ket_noi();
            kn.Open();
            SqlDataAdapter sql = new SqlDataAdapter("select * from " + tablename + "", kn.conn);
            DataSet dataset = new DataSet();
            sql.Fill(dataset);
            kn.Close();
            return dataset;
        }
        #endregion

        #region Hàm xoá dữ liệu sau đó lưu vào CSDL
        public void SaveDataDelete(DataSet dts, string tablename)
        {
            ket_noi kn = new ket_noi();
            kn.Open();
            try
            {
                if (dts.HasChanges())
                {
                    SqlDataAdapter adapter = new SqlDataAdapter("select * from " + tablename + "", kn.conn);
                    SqlCommandBuilder cmbd = new SqlCommandBuilder(adapter);
                    adapter.Update(dts);
                    MessageBox.Show("Đã lưu các thay đổi!", "Thông Báo!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Dữ liệu có sự ràng buộc không thể xoá !", "Thông Báo!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            kn.Close();
        }
        #endregion

        #region Hàm thêm mới nhân viên vào bảng NHANVIEN
        public DataSet AddNhanVien(string manv, string hoten, string diachi, string phone, string email)
        {
            kn.Open();
            SqlCommand comm = new SqlCommand("insert into NHANVIEN(manv, hoten, diachi, phone, email) values(@mnv, @ht, @dc, @p, @em)", kn.conn);
            comm.Parameters.AddWithValue("@mnv", manv);
            comm.Parameters.AddWithValue("@ht", hoten);
            comm.Parameters.AddWithValue("@dc", diachi);
            comm.Parameters.AddWithValue("@p", phone);
            comm.Parameters.AddWithValue("@em", email);
            DataSet dataset = new DataSet();
            SqlDataAdapter adapter;
            try
            {
                comm.ExecuteNonQuery();
                adapter = new SqlDataAdapter("select * from NHANVIEN", kn.conn);
                adapter.Fill(dataset);
                MessageBox.Show("Đã thêm nhân viên mới thành công !!!", "Thông Báo!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception)
            {
                //MessageBox.Show(e.Message);
                MessageBox.Show("Nhân viên đã tồn tại vui lòng kiểm tra lại !", "Thông Báo!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            kn.Close();
            return dataset;
        }
        #endregion

        #region Hàm thêm mới người dùng vào bảng DANGNHAP
        public DataSet AddNguoiDung(string manv, string taikhoan, string matkhau, string quyen)
        {
            kn.Open();
            SqlCommand comm = new SqlCommand("insert into DANGNHAP(manv, taikhoan, matkhau, quyen) values(@mnv, @tk, @mk, @q)", kn.conn);
            comm.Parameters.AddWithValue("@mnv", manv);
            comm.Parameters.AddWithValue("@tk", taikhoan);
            comm.Parameters.AddWithValue("@mk", matkhau);
            comm.Parameters.AddWithValue("@q", quyen);
            DataSet dataset = new DataSet();
            SqlDataAdapter adapter;
            try
            {
                comm.ExecuteNonQuery();
                adapter = new SqlDataAdapter("select * from DANGNHAP", kn.conn);
                adapter.Fill(dataset);
                MessageBox.Show("Đã phân quyền thành công !!!", "Thông Báo!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception)
            {
                //MessageBox.Show(e.Message);
                MessageBox.Show("Tài khoản đã tồn tại vui lòng kiểm tra lại !", "Thông Báo!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            kn.Close();
            return dataset;
        }
        #endregion

        #region Hàm thêm mới đơn giá vào bảng BANGGIA
        public DataSet AddDonGia(string dongia, string ngay)
        {
            kn.Open();
            SqlCommand comm = new SqlCommand("insert into BANGGIA(dongia, ngayapdung) values(@dg, @n)", kn.conn);
            comm.Parameters.AddWithValue("@dg", dongia);
            comm.Parameters.AddWithValue("@n", ngay);
            DataSet dataset = new DataSet();
            SqlDataAdapter adapter;
            try
            {
                comm.ExecuteNonQuery();
                adapter = new SqlDataAdapter("select * from BANGGIA", kn.conn);
                adapter.Fill(dataset);
                MessageBox.Show("Đã thêm đơn giá mới thành công !!!", "Thông Báo!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception)
            {
                //MessageBox.Show(e.Message);
                MessageBox.Show("Đã xảy ra lỗi, vui lòng kiểm tra lại !", "Thông Báo!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            kn.Close();
            return dataset;
        }
        #endregion

        #region Hàm thêm mới thông tin bảo trì máy vào bảng TINHTRANG
        public DataSet AddThongTin(string tenmay, string ngaybatdau, string ngayketthuc, string tinhtrang, string ghichu)
        {
            kn.Open();
            SqlCommand comm = new SqlCommand("insert into TINHTRANG(tenmay, ngaybatdau, ngayketthuc, tinhtrang, ghichu) values(@tm, @nbd, @nkt, @tt, @gc)", kn.conn);
            comm.Parameters.AddWithValue("@tm", tenmay);
            comm.Parameters.AddWithValue("@nbd", ngaybatdau);
            comm.Parameters.AddWithValue("@nkt", ngayketthuc);
            comm.Parameters.AddWithValue("@tt", tinhtrang);
            comm.Parameters.AddWithValue("@gc", ghichu);
            DataSet dataset = new DataSet();
            SqlDataAdapter adapter;
            try
            {
                comm.ExecuteNonQuery();
                adapter = new SqlDataAdapter("select * from TINHTRANG", kn.conn);
                adapter.Fill(dataset);
                MessageBox.Show("Đã thêm thông tin bảo trì máy thành công !!!", "Thông Báo!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception)
            {
                MessageBox.Show("Đã xảy ra lỗi, vui lòng kiểm tra lại !", "Thông Báo!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            kn.Close();
            return dataset;
        }
        #endregion

        #region Hàm thêm mới thông tin vào bảng SESSION
        public void SaveSession(string mac, string IP, DateTime start, DateTime end, double money)
        {
            kn.Open();
            SqlCommand comm = new SqlCommand("insert into SESSION(manv, mac, starttime, endtime, thanhtien) values(@mnv, @mac, @st, @et, @tt)", kn.conn);
            comm.Parameters.AddWithValue("@mnv", Program.manv);
            comm.Parameters.AddWithValue("@mac", mac);
            comm.Parameters.AddWithValue("@st", start);
            comm.Parameters.AddWithValue("@et", end);
            comm.Parameters.AddWithValue("@tt", money);
            DataSet dataset = new DataSet();
            SqlDataAdapter adapter;
            try
            {
                comm.ExecuteNonQuery();
                adapter = new SqlDataAdapter("select * from SESSION", kn.conn);
                adapter.Fill(dataset);
                MessageBox.Show("Đã tính tiền thành công !!!", "Thông Báo!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception)
            {
                MessageBox.Show("Đã xảy ra lỗi, vui lòng kiểm tra lại !", "Thông Báo!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            kn.Close();
            //return dataset;
        }
        #endregion

        #region Hàm thêm mới máy client vào CLIENT
        public void addClient(string mac, string ip, string name)
        {
            kn.Open();
            bool test = false;
            SqlCommand cmm = new SqlCommand("select mac from CLIENT", kn.conn);
            SqlDataReader reader = cmm.ExecuteReader();
            while (reader.Read())
            {
                if (reader[0].ToString() == mac)
                {
                    test = true;
                    break;
                }
            }
            kn.Close();
            if (test == false)
            {
                kn.Open();
                SqlCommand comm = new SqlCommand("insert into CLIENT(mac, ip, computer_name) values(@mac, @ip, @n)", kn.conn);
                comm.Parameters.AddWithValue("@mac", mac);
                comm.Parameters.AddWithValue("@ip", ip);
                comm.Parameters.AddWithValue("@n", name);
                DataSet dataset = new DataSet();
                SqlDataAdapter adapter;
                try
                {
                    comm.ExecuteNonQuery();
                    adapter = new SqlDataAdapter("select * from CLIENT", kn.conn);
                    adapter.Fill(dataset);
                    MessageBox.Show("Đã thêm thông tin máy client thành công !!!", "Thông Báo!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch (Exception)
                {
                    MessageBox.Show("Đã xảy ra lỗi, vui lòng kiểm tra lại !", "Thông Báo!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                kn.Close();
                //return dataset;
            }
        }
         
        #endregion
    }
}
